package ch.comtools.ssh;

/**
 * @author Roger Dudler <roger.dudler@gmail.com>
 * @since 1.0
 * @version $Id$
 */
public class SSHKeyExchangeConfiguration {
	
	private byte[] cookie = new byte[16];
	private String kexAlgorithm;
	private String serverHostKeyAlgorithm;
	private String encryptionAlgorithmClientToServer;
	private String encryptionAlgorithmServerToClient;
	private String macAlgorithmClientToServer;
	private String macAlgorithmServerToClient;
	private String compressionAlgorithmClientToServer;
	private String compressionAlgorithmServerToClient;
	private String languageClientToServer;
	private String languageServerToClient;
	private boolean firstKexPacketFollows;
	private int reserved;
	
	public SSHKeyExchangeConfiguration() {
		this.init();
	}
	
	/**
	 * Set default values
	 */
	private void init() {
		// diffie-hellman-group1-sha1,diffie-hellman-group-exchange-sha1
		// this.setKexAlgorithm("diffie-hellman-group1-sha1");
		// ssh-rsa,ssh-dss
		// this.setServerHostKeyAlgorithm("ssh-rsa");
		// 3des-cbc,blowfish-cbc
		// this.setEncryptionAlgorithmClientToServer("3des-cbc");
		// 3des-cbc,blowfish-cbc
		// this.setEncryptionAlgorithmServerToClient("3des-cbc");
		// hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96
		// this.setMacAlgorithmClientToServer("hmac-md5");
		// hmac-md5,hmac-sha1,hmac-sha1-96,hmac-md5-96
		// this.setMacAlgorithmClientToServer("hmac-md5");
		// zlib@openssh.com,zlib,none
		// this.setCompressionAlgorithmClientToServer("none");
		// zlib@openssh.com,zlib,none
		// this.setCompressionAlgorithmClientToServer("none");
		// n/a
		// this.setLanguageClientToServer("");
		// n/a
		// this.setLanguageServerToClient("");
	}
	
	public byte[] getCookie() {
		return cookie;
	}
	public void setCookie(byte[] cookie) {
		this.cookie = cookie;
	}
	public String getKexAlgorithm() {
		return kexAlgorithm;
	}
	public void setKexAlgorithm(String kexAlgorithm) {
		this.kexAlgorithm = kexAlgorithm;
	}
	public String getServerHostKeyAlgorithm() {
		return serverHostKeyAlgorithm;
	}
	public void setServerHostKeyAlgorithm(String serverHostKeyAlgorithm) {
		this.serverHostKeyAlgorithm = serverHostKeyAlgorithm;
	}
	public String getEncryptionAlgorithmClientToServer() {
		return encryptionAlgorithmClientToServer;
	}
	public void setEncryptionAlgorithmClientToServer(
			String encryptionAlgorithmClientToServer) {
		this.encryptionAlgorithmClientToServer = encryptionAlgorithmClientToServer;
	}
	public String getEncryptionAlgorithmServerToClient() {
		return encryptionAlgorithmServerToClient;
	}
	public void setEncryptionAlgorithmServerToClient(
			String encryptionAlgorithmServerToClient) {
		this.encryptionAlgorithmServerToClient = encryptionAlgorithmServerToClient;
	}
	public String getMacAlgorithmClientToServer() {
		return macAlgorithmClientToServer;
	}
	public void setMacAlgorithmClientToServer(String macAlgorithmClientToServer) {
		this.macAlgorithmClientToServer = macAlgorithmClientToServer;
	}
	public String getMacAlgorithmServerToClient() {
		return macAlgorithmServerToClient;
	}
	public void setMacAlgorithmServerToClient(String macAlgorithmServerToClient) {
		this.macAlgorithmServerToClient = macAlgorithmServerToClient;
	}
	public String getCompressionAlgorithmClientToServer() {
		return compressionAlgorithmClientToServer;
	}
	public void setCompressionAlgorithmClientToServer(
			String compressionAlgorithmClientToServer) {
		this.compressionAlgorithmClientToServer = compressionAlgorithmClientToServer;
	}
	public String getCompressionAlgorithmServerToClient() {
		return compressionAlgorithmServerToClient;
	}
	public void setCompressionAlgorithmServerToClient(
			String compressionAlgorithmServerToClient) {
		this.compressionAlgorithmServerToClient = compressionAlgorithmServerToClient;
	}
	public String getLanguageClientToServer() {
		return languageClientToServer;
	}
	public void setLanguageClientToServer(String languageClientToServer) {
		this.languageClientToServer = languageClientToServer;
	}
	public String getLanguageServerToClient() {
		return languageServerToClient;
	}
	public void setLanguageServerToClient(String languageServerToClient) {
		this.languageServerToClient = languageServerToClient;
	}
	public boolean isFirstKexPacketFollows() {
		return firstKexPacketFollows;
	}
	public void setFirstKexPacketFollows(boolean firstKexPacketFollows) {
		this.firstKexPacketFollows = firstKexPacketFollows;
	}
	public int getReserved() {
		return reserved;
	}
	public void setReserved(int reserved) {
		this.reserved = reserved;
	}

}
